package com.zhentao.controller;


import com.zhentao.interfaceclass.LogInterface;
import com.zhentao.model.admin.dto.SysUserDto;
import com.zhentao.model.admin.dto.UserDto;
import com.zhentao.model.common.dtos.PermissionResult;
import com.zhentao.model.common.dtos.ResponseResult;
import com.zhentao.model.pojo.par.dto.ChargeParOrdersDto;
import com.zhentao.model.pojo.user.ChargeUser;
import com.zhentao.service.SysUserService;
import com.zhentao.user.ChargeUserFeignApi;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * @ClassName: AdminUserController
 * @Author: 振涛教育_Q
 * @Date: 2024/12/26 19:18
 */
@RestController
@RequestMapping("/user/info")
public class AdminUserController {

    @Autowired
    private SysUserService sysUserService;
    @Autowired
    private ChargeUserFeignApi chargeUserFeignApi;


    /**
     * @return com.zhentao.model.common.dtos.ResponseResult
     * @description admin -- user -- login
     * @author 振涛教育_小Q
     * @date 2024/12/26 19:20
     */
    @PostMapping("/login")
    @LogInterface(value = "管理端--用户登录")
    public ResponseResult login(@RequestBody SysUserDto sysUser) {
        return sysUserService.login(sysUser);
    }

    /**
     * @param
     * @return com.zhentao.model.common.dtos.ResponseResult
     * @description 获取用户信息
     * @author 振涛教育_小Q
     * @date 2024/12/26 20:51
     */
    @GetMapping("/userInfo")
    @LogInterface(value = "管理端--获取用户信息")
    public ResponseResult userInfo() {
        return sysUserService.userInfo();
    }

    /**
     * @param
     * @return com.zhentao.model.common.dtos.ResponseResult
     * @description 退出登录
     * @author 振涛教育_小Q
     * @date 2024/12/27 8:58
     */
    @GetMapping("/logout")
    @LogInterface(value = "管理端--用户退出")
    public ResponseResult logout() {
        return sysUserService.logout();
    }

    @GetMapping("/sys/coupon/select")
    public PermissionResult csRun() {
        return sysUserService.csRun();
    }


    /**
     * @param
     * @return com.zhentao.model.common.dtos.ResponseResult
     * @description 管理端 用户注册数量 活跃数量
     * @author 振涛教育_小Q
     * @date 2024/12/31 16:07
     */
    @GetMapping("/count")
    public ResponseResult initUserCount() {
        return sysUserService.initUserCount();
    }


    /**
     * @description 获取用户信息
     * @author W177
     * @date 2024/12/27 8:58
     */
    @PostMapping("/getUserList")
    @LogInterface(value = "管理端--查询用户信息")
    public PermissionResult getUserList(@RequestBody(required = false) ChargeUser chargeUser) {
        return sysUserService.getUserList(chargeUser);
    }

    /**
     * @param
     * @return com.zhentao.model.common.dtos.ResponseResult
     * @description 管理端  车辆信息管理列表
     * @author 大毅
     */
    @GetMapping("/car/select")
    public ResponseResult chargeParOrdersList(ChargeParOrdersDto chargeParOrdersDto) {
        return chargeUserFeignApi.chargeParOrdersList(chargeParOrdersDto);
    }

    /**
     * @param id
     * @return com.zhentao.model.common.dtos.ResponseResult
     * @description 管理端  车辆信息管理---删除
     * @author 大毅
     */
    @DeleteMapping("/car/del")
    public ResponseResult chargeParOrdersDelete(Long id) {
        return chargeUserFeignApi.chargeParOrdersDelete(id);
    }
    /**
     * @description 将用户加入黑名单
     * @author W177
     * @date 2024/12/27 8:58
     */
    @GetMapping("/addBlackList")
    @LogInterface(value = "管理端--用户黑名单")
    public PermissionResult addBlackList (@RequestParam(value = "userId", required = false) Integer userId){
        return sysUserService.addBlackList(userId);
    }
    /**
     * @deprecated 获取角色信息
     * @author W177
     * @date 2024/12/27 8:58
     */
    @GetMapping("/getRoleList")
    @LogInterface(value = "管理端--查询角色")
    public PermissionResult getRoleList () {
        return sysUserService.getRoleList();
    }

    /**
     * @description 修改用户
     * @author W177
     * @date 2024/12/27 8:58
     */
    @PostMapping("/updateUser")
    @LogInterface(value = "管理端--修改用户")
    public PermissionResult updateUser (@RequestBody UserDto dto){
        return sysUserService.updateUser(dto);
    }
 }

